package com.mrt.chatgpt.data.domain.opai.service;

import com.mrt.chatgpt.data.domain.opai.model.aggregates.ChatProcessAggregate;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;

/**
 * @Author 86135
 * @Date 2024/3/13 19:48
 * @Description
 * @Version 1.0
 * @快捷键 getterANDsetter ALT+Insert
 * @快捷键 Ctrl+/或者Ctrl+Shift+/都可以快速注释
 * @快捷键 Ctrl+D 快速复制代码
 * @“ctrl+r”快捷键,用于当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件;
 * @ALT+鼠标左键 整列编辑
 * @快捷键提示 ALT+Enter
 * @快捷键 快速写注释：在方法函数上方输入/** 然后回车
 * @快捷键 Ctrl+O，选择重写的方法
 * @快捷键 ALT+INSERT
 */

/**
 * ResponseBodyEmitter 是 Spring Framework 中用于异步发送响应数据的一种方式。它允许在处理 HTTP 请求时逐段地发送数据给客户端，而不需要等待所有数据准备就绪后再发送。
 * 主要特点包括：
 * 异步响应处理：ResponseBodyEmitter 可以在处理请求时异步地向客户端发送数据，这对于处理大量数据或需要长时间生成数据的情况非常有用。
 * 逐段发送数据：您可以通过 ResponseBodyEmitter.send() 方法逐段地发送数据给客户端，而不是一次性发送所有数据。
 * 超时处理：ResponseBodyEmitter 支持设置超时时间，如果在指定时间内没有数据发送，则会触发超时处理。
 * 错误处理：您可以在发送数据过程中捕获异常，并对错误情况进行处理。
 * 使用 ResponseBodyEmitter 需要在控制器方法中返回它作为处理方法的返回类型，并在处理过程中使用 send() 方法来发送数据。这样可以实现异步、分步发送数据给客户端的效果。
 * 总之，ResponseBodyEmitter 是 Spring 中用于异步、逐段发送响应数据的工具，适合处理需要较长时间生成数据或需要逐段发送数据的场景
 */
public interface IChatService {

    ResponseBodyEmitter completions(ResponseBodyEmitter emitter, ChatProcessAggregate chatProcess);

}
